

/*
-----------------------------------------------------------------------------
Filename:    GraphicsInterface.h
Description: This is an Abstract specification of generic graphics functions which
allows the graphics interface object to behave in a polymorphic fashion.  For example,
initializeRenderer can have multiple different realizations based on the different
graphics engines being interfaced.  This allows the graphicsInterface object to be
implemented by any module with little to no change in code.
-----------------------------------------------------------------------------
*/



class GraphicsInterface {
public:

	/*     Setting the function to zero in the prototype declares the
	 * function as a "pure virtual" function that is not defined by
	 * this class and therefore must be defined in the derived classes.
	 *
	 *     Because this is a purely virtual class, all GraphicsInterface
	 * instantiations must be of a specific child type.
	 */
	virtual bool initializeRenderer(char *windowLabel) = 0;
	virtual void createLight( char *type, float x, float y, float z ) = 0;
	virtual void setSkyBox( char *resourceFolder ) = 0;
	virtual void engageRenderLoop() = 0;
	virtual bool renderFrame() = 0;
	virtual void powerDown() = 0;
	virtual bool activateMouseLookListener() = 0;
	virtual bool activateWindowListener() = 0;
};
